// 统一封装接口方法
// 每个方法负责一个请求的url地址
// 逻辑页面，导入
import axios from '@/utils/request.js'

// 登录-登录接口
// axios内部，会把参数对象转成json字符串格式发后台
// axios内部，会自动携带请求参数（headers）里
// Content-Type:'application/json' 帮你添加
export const loginAPI = ({ mobile, code }) =>
  axios({
    url: '/v1_0/authorizations',
    method: 'POST',
    data: {
      mobile,
      code
    }
  })

// 获取-获取用户选择的频道
// 注意：用户没有登录，默认返回后台设置的默认频道列表
export const getUserChannelsAPI = () => axios({
  url: '/v1_0/user/channels'
})
// 频道-获取所有频道
export const getAllchannelsApI = () => axios({
  url: '/v1_0/channels',
  method: 'GET'
})
// 频道-更新覆盖频道
export const updateChannelsAPI = ({ channels }) => axios({
  url: '/v1_0/user/channels',
  method: 'PUT',
  data: {
    channels// 用户已选择整个频道数组
  }
})
// 频道-删除用户指定的频道
export const rmoveChannelsAPI = ({ channelId }) => axios({
  url: `/v1_0/user/channels/${channelId}`,
  method: 'DELETE'
})

// 获取文章新闻推荐
export const articlesListAPI = ({ channel_id, timestamp }) => axios({
  url: '/v1_0/articles',
  method: 'GET',

  params: { // 这里的参数, axios会帮你拼接在URL?后面 (查询字符串)
    channel_id,
    timestamp

  }

})
// 文章-反馈-不感兴趣
export const dislikeArticleAPI = ({ artId }) => axios({
  url: '/v1_0/article/dislikes',
  method: 'POST',

  data: {
    target: artId
  }
})

// 文章-反馈-反馈垃圾内容举报
export const reportArticleAPI = ({ artId, type }) => axios({
  url: '/v1_0/article/reports',
  method: 'POST',

  data: {
    target: artId,
    type: type
  }
})

// 文章-获取新闻详情
export const detailAPI = ({ artId }) => axios({
  url: `/v1_0/articles/${artId}`
})

// 文章--点赞
export const likeArticleAPI = ({ artId }) => axios({
  url: '/v1_0/article/likings',
  method: 'POST',
  data: {
    target: artId
  }
})

// 文章--取消点赞
export const unLikeArticleAPI = ({ artId }) => axios({
  url: `/v1_0/article/likings/${artId}`,
  method: 'DELETE'

})

// 文章 - 获取- 评论列表
export const commentsListAPI = ({ id, offset = null, limit = 10 }) => axios({
  url: '/v1_0/comments',
  method: 'GET',
  params: { // axios 只针对params参数，如果发现键值对，值为null，会忽略此参数名和值不携带在url？后面
    type: 'a', // 什么时候需要外面传：此值会发生变量
    source: id,
    offset,
    limit
  }

})
// 文章--评论--发布评论
export const commentSendAPI = ({ id, content, art_id = null }) => {
  const obj = {
    target: id,
    content
  }
  if (art_id !== null) { // 如果本次有第三个参数，证明是对评论进行回复
    obj.art_id = art_id
  }
  return axios({
    url: '/v1_0/comments',
    method: 'POST',
    data: obj
  })
}

// 搜索 - 联想菜单列表
export const suggestListAPI = ({ keywords }) => axios({
  url: '/v1_0/suggestion',
  params: {
    q: keywords
  }
})

// 搜索 - 搜索结果列表
export const searchResultAPI = ({ page = 1, per_page = 10, q }) => axios({
  url: '/v1_0/search',
  method: 'GET',
  params: {
    page,
    per_page,
    q
  }
})
// 用户--关注
export const userFollowedAPI = ({ userId }) => axios({
  url: '/v1_0/user/followings',
  method: 'POST',
  data: {
    target: userId
  }
})

// 用户--取消关注
export const userUnFollowedAPI = ({ userId }) => axios({
  url: `/v1_0/user/followings/${userId}`,
  method: 'DELETE'
})

// 用户 -- 获取基本信息（我的页面显示数据）

export const getUserInfoAPI = () => axios({
  url: '/v1_0/user',
  method: 'GET'

})
// 用户-- 获取个人资料（编辑页面使用）
export const userProfileAPI = () => axios({
  url: '/v1_0/user/profile'
})

// 用户--更新头像

export const undateUserPhotoAPI = (fd) => axios({
  url: '/v1_0/user/photo',
  method: 'PATCH',
  data: fd// fd外面一会传进来new FormData（）表单对象
  // 如果你的请求体直接是FormData表单对象，你也不用自己添加
  // Consent-Type，axios发现数据请求体是表单对象，它也不会转换成json字符串
  // 也不会带Consent-Type：application/json，而是交给浏览器，浏览器发现请求体是formdata会自己携带Consent-Type
})

// 用户--更新基本资料
export const updateUserProfileAPI = (dataObj) => {
  const obj = {
    name: '',
    gender: 0,
    birthday: '',
    intro: ''
  }
  for (const prop in obj) {
    if (dataObj[prop] === undefined) {
      delete obj[prop]// 从obj身上移除这对属性和值
    } else {
      obj[prop] = dataObj[prop]// 如果使用了，就从外面对象取出对应key值，保存到obj上
    }
  }
  return axios({
    url: '/v1_0/user/profile',
    method: 'PATCH', // 局部更新->PUT(全部更新)
    data: obj
  })
}

// 评论--取消点赞
export const unHcommentDisLikingAPI = (comId) => axios({
  url: `/v1_0/comment/likings/${comId}`,
  method: 'DELETE'

})

// 评论 -- 点赞
export const hcommentDisLikingAPI = ({ comId }) => axios({
  url: '/v1_0/comment/likings',
  method: 'POST',
  data: {
    target: comId
  }

})
